<?php defined('SYSPATH') or die('No direct script access.');

class Text extends Kohana_Text {
	
	/**
	 * Функция обрезает HTML-тэги и их атрибуты.
	 *
	 * @param	 string	$string							Исходная строка
	 * @param	 string	$allowtags					 Тэги, которые необходимо сохранить
	 * @param	 array	 $disabledattributes	Недопустимые атрибуты
	 * @return	string
	 */
	public static function strip_tags($string, $allowtags = NULL, $disabledattributes = array('onabort', 'onactivate', 'onafterprint', 'onafterupdate', 'onbeforeactivate', 'onbeforecopy', 'onbeforecut', 'onbeforedeactivate', 'onbeforeeditfocus', 'onbeforepaste', 'onbeforeprint', 'onbeforeunload', 'onbeforeupdate', 'onblur', 'onbounce', 'oncellchange', 'onchange', 'onclick', 'oncontextmenu', 'oncontrolselect', 'oncopy', 'oncut', 'ondataavaible', 'ondatasetchanged', 'ondatasetcomplete', 'ondblclick', 'ondeactivate', 'ondrag', 'ondragdrop', 'ondragend', 'ondragenter', 'ondragleave', 'ondragover', 'ondragstart', 'ondrop', 'onerror', 'onerrorupdate', 'onfilterupdate', 'onfinish', 'onfocus', 'onfocusin', 'onfocusout', 'onhelp', 'onkeydown', 'onkeypress', 'onkeyup', 'onlayoutcomplete', 'onload', 'onlosecapture', 'onmousedown', 'onmouseenter', 'onmouseleave', 'onmousemove', 'onmoveout', 'onmouseover', 'onmouseup', 'onmousewheel', 'onmove', 'onmoveend', 'onmovestart', 'onpaste', 'onpropertychange', 'onreadystatechange', 'onreset', 'onresize', 'onresizeend', 'onresizestart', 'onrowexit', 'onrowsdelete', 'onrowsinserted', 'onscroll', 'onselect', 'onselectionchange', 'onselectstart', 'onstart', 'onstop', 'onsubmit', 'onunload'))
	{
		if (empty($disabledattributes))
			return strip_tags($string, $allowtags);
		
		return preg_replace('/<(.*?)>/ie', "'<' . preg_replace(array('/javascript:[^\"\']*/i', '/(" . implode('|', $disabledattributes) . ")[ \\t\\n]*=[ \\t\\n]*[\"\'][^\"\']*[\"\']/i', '/\s+/'), array('', '', ' '), stripslashes('\\1')) . '>'", strip_tags($string, $allowtags));
	}
	
	/**
	 * Правильные окончания слов.
	 *
	 * $n = 10;
	 * echo $n." ".number_ending($n, "продуктов", "продукт", "продукта");
	 * // Вернет "10 продуктов"
	 *
	 * $n = 21;
	 * echo $n." ".number_ending($n, "продуктов", "продукт", "продукта");
	 * // Вернет "21 продукт"
	 *
	 * $n = 32;
	 * echo $n." ".number_ending($n, "продуктов", "продукт", "продукта");
	 * // Вернет "32 продукта"
	 */
	public static function number_ending($number, $ending0, $ending1, $ending2)
	{
		$num100 = $number % 100;
		$num10 = $number % 10;
		
		if ($num100 >= 5 && $num100 <= 20)
			return $ending0;
		elseif ($num10 == 0)
			return $ending0;
		elseif ($num10 == 1)
			return $ending1;
		elseif ($num10 >= 2 && $num10 <= 4)
			return $ending2;
		elseif ($num10 >= 5 && $num10 <= 9)
			return $ending0;
		else
			return $ending2;
	}
	
}
